import request from '@/api/request';
import { AxiosPromise } from 'axios';
import { NoticePageQuery, NoticeQueryParam, NoticeInfo } from './types';

/**
 * 网站公告分页列表
 * @param params 查询参数
 */
export function pageNotice(params: NoticePageQuery): AxiosPromise<PageResult<NoticeInfo[]>> {
  return request({
    url: '/api/v1/notice/page',
    method: 'get',
    params
  });
}

/**
 * 根据id获取网站公告信息
 * @param id 公告ID
 */
export function getNoticeById(id: number): AxiosPromise<NoticeInfo> {
  return request({
    url: `/api/v1/notice/${id}`,
    method: 'get'
  });
}

/**
 * 保存网站公告信息
 * @param data 公告信息
 */
export function saveNotice(data: NoticeInfo): AxiosPromise<boolean> {
  return request({
    url: '/api/v1/notice',
    method: 'post',
    data
  });
}

/**
 * 修改网站公告信息
 * @param data 公告信息
 */
export function updateNotice(data: NoticeInfo): AxiosPromise<boolean> {
  return request({
    url: '/api/v1/notice',
    method: 'put',
    data
  });
}

/**
 * 删除网站公告信息
 * @param ids 公告ID数组
 */
export function deleteNotice(ids: number[]): AxiosPromise<boolean> {
  return request({
    url: '/api/v1/notice',
    method: 'delete',
    data: ids
  });
}

/**
 * 导出网站公告信息
 * @param queryParams 查询参数
 */
export function exportNotice(queryParams: NoticeQueryParam): AxiosPromise<Blob> {
  return request({
    url: '/api/v1/notice/export',
    method: 'get',
    params: queryParams,
    responseType: 'blob'
  });
}
